package pkg

type FrameItemParam struct {
	Type        string  `json:"type" gorm:"column:type"`                       // 数据块类型 [包头, 帧长, 地址, 功能码, 数据部分, 校验, 帧尾]
	Addr        string  `json:"addr" gorm:"column:addr"`                       // 变量地址
	FieldName   string  `json:"field_name" gorm:"column:field_name"`           // 变量名 (当type是变量时设置)
	Start       int     `json:"start" gorm:"column:start"`                     // 开始字节
	End         int     `json:"end" gorm:"column:end"`                         // 结束字节
	RawData     string  `json:"raw_data" gorm:"column:raw_data"`               // 原始十六进制字符串 (type 为非 [var,crc] 时都是直接输入) (type为crc时计算, type为var时按下面规则解析)
	InputMethod uint8   `json:"input_method" gorm:"column:input_method"`       // 方式 [ 0.直接输入 1.设置变量 ]
	CheckMethod string  `json:"check_method" gorm:"column:check_method"`       // 方式 [ crc16 ,sum ]
	CheckStart  int     `json:"check_start" gorm:"column:check_start"`         // 校验开始位置 (当type是校验时设置)
	CheckEnd    int     `json:"check_end" gorm:"column:check_end"`             // 校验结束位置 (当type是校验时设置)
	DataType    string  `json:"data_type" gorm:"column:data_type"`             // 粗数据类型 (int,float,bool)
	SpecType    string  `json:"spec_type" gorm:"column:spec_type"`             // 具体数据类型 (uint8, uint16, uint, float32, float64, bool) // 具体类型根据粗类型和起始字节长度计算出
	Value       float64 `json:"value" gorm:"column:value"`                     // 解析值
	Endian      string  `json:"endian" gorm:"column:endian"`                   // 大小端 [big,little]
	Ratio       float64 `json:"ratio" gorm:"column:ratio"`                     // 系数 value除之后的值
	MultiByte   uint8   `json:"multi_byte" gorm:"column:multi_byte"`           // data_type 为 bool 时 0.单字节 1.多字节
	BoolBits    uint8   `gorm:"column:bool_bits;comment:第几位" json:"bool_bits"` // 第几位
	CreateTime  *string `json:"create_time" gorm:"create_time"`
	UpdateTime  *string `json:"update_time" gorm:"update_time"`
}
